using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using Etna.Exportaciones.En;
using Etna.Exportaciones.Ad;

namespace Etna.Exportaciones.Rn
{
   public class RnRequerimiento:RnGeneral
   {
      public EnRequerimiento Leer(int pidRequerimiento)
      {
         EnRequerimiento oEnRequerimiento = null;

         using (SqlConnection con = new SqlConnection(CadenaConexion))
         {
            try
            {
               con.Open();
               AdRequerimiento oAdRequerimiento = new AdRequerimiento();
               oEnRequerimiento = oAdRequerimiento.Leer(pidRequerimiento, con);
            }
            catch (SqlException ex)
            {
               oEnRequerimiento = null;
            }
         }
         return oEnRequerimiento;
      }

      public bool Eliminar(int pidRequerimiento, int pidEstadoRequirimiento)
      {         
          bool Resultado = false;

          using (SqlConnection con = new SqlConnection(CadenaConexion))
          {

              try
              {
                  con.Open();
                  AdRequerimiento oAdRequerimiento = new AdRequerimiento();
                  Resultado = oAdRequerimiento.Eliminar(pidRequerimiento, pidEstadoRequirimiento, con);
              }
              catch (SqlException ex)
              {
                  Resultado = false;
              }
          }
          return Resultado;
      }

      // Proceso para insertar un registro nuevo
      public bool Insertar(EnRequerimiento poEnRequerimiento)
      {
          bool Resultado = false;

          using (SqlConnection con = new SqlConnection(CadenaConexion))
          {

             try
              {
                  con.Open();
                  AdRequerimiento oAdRequerimiento = new AdRequerimiento();
                  Resultado = oAdRequerimiento.Insertar(poEnRequerimiento, con);
              }
              catch (SqlException ex)
              {
                  Resultado = false;
              }
          }
          return Resultado;
      }
      // Proceso para modificar un registro existente
      public bool Modificar(EnRequerimiento poEnRequerimiento)
      {
          bool Resultado = false;

          using (SqlConnection con = new SqlConnection(CadenaConexion))
          {

             try
              {
                  con.Open();
                  AdRequerimiento oAdRequerimiento = new AdRequerimiento();
                  Resultado = oAdRequerimiento.Modificar(poEnRequerimiento, con);
              }
              catch (SqlException ex)
              {
                  Resultado = false;
              }
          }
          return Resultado;
      }
      public List<EnRequerimiento> Listar(int pidCliente = 0, 
                                        int pidRequerimiento = 0,
                                          string psDescripcion = null,  
                                          String pdfechaInicio = "",
                                          String pdfechaFin = "",
                                          int pidEstadoReq  = 0)
      {
         List<EnRequerimiento> loEnRequerimiento = null;

         using (SqlConnection con = new SqlConnection(CadenaConexion))
         {
            try
            {
               con.Open();
               AdRequerimiento oAdRequerimiento = new AdRequerimiento();               
               loEnRequerimiento = oAdRequerimiento.Listar(pidCliente, pidRequerimiento, psDescripcion,pdfechaInicio,pdfechaFin,pidEstadoReq,con);
            }
            catch (SqlException ex)
            {
               loEnRequerimiento = null;
            }
         }
         return loEnRequerimiento;
      }

   }
}
